[Attempto] Are arithmetic expressions typed?

Joshua TAYLOR tayloj at cs.rpi.edu
Wed Jun 3 13:50:30 CEST 2009


Ah, thanks! That answers it perfectly. Before I ask any similar
questions in the future, I'll try to check those files first. (Looking
at them in retrospect, I can see the "sem!datatype!number" and
"sem!datatype!string" which would have probably answered my question.)

Joshua

On Wed, Jun 3, 2009 at 3:39 AM, Tobias Kuhn <t.kuhn at gmx.ch> wrote:
> Hi Joshua,
>
> ACE uses "&" for string concatenation and this can be used only for strings.
> "+" is interpreted as addition and needs numbers. (Maybe we could be more
> permissive in this respect.)
>
> The syntax report is underspecified in this (and some other) respects.
> Actually, the only complete specification of ACE is the parser itself that
> is represented by the files grammar.fit, grammar_functionwords.fit, and
> grammar_contentwords.fit. The syntax report can be automatically generated
> out of the comments within these files.
>
> I hope this answers your question.
>
>
> Tobias
>
>
> Joshua TAYLOR wrote:
>>
>> Sorry to throw so much at you all at once, but I'm just working my way
>> through the DRS report.
>> In the syntax specification, arithmetic terms do not seem to typed.
>> I.e., "abc" + 2 would be a valid arithmetic term, by the parse:
>>
>> term -> term1 -> term2 (term1_tail)
>> term2 -> term3 -> atomicTerm -> string (i.e., "abc")
>> term1_tail -> + term1
>> term1 -> term2 (term1_tail)
>> term2 -> term3 - > atomicTerm -> Integer (i.e., 2)
>>
>> However, following are some examples about which combinations of
>> expressions and operators actually work. To summarize before the
>> examples,
>>
>> string & string : OK
>> string & integer : ERROR
>> integer & integer : ERROR
>> integer + integer : OK
>> string + integer : ERROR
>> string + string : ERROR
>>
>> Here are the examples.
>>
>> == string & string is OK
>>
>> CL-USER 112 > (ape :text "John, compute \"abc\" & \"2\"!" :solo 'drs)
>> "drs([], [command(drs([A], [predicate(A, compute, named('John'),
>> expr(&, string(abc), string(2)))-1/3]))])"
>>
>> == string & integer is not OK
>>
>> CL-USER 113 > (ape :text "John, compute \"abc\" & 2!" :solo 'drs)
>> "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
>>
>> <messages>
>>  <message
>>      importance=\"error\"
>>      type=\"sentence\"
>>      sentence=\"1\"
>>      token=\"8\"
>>      value=\"John, compute &quot;abc&quot; &#38; &lt;&gt; 2!\"
>>      repair=\"Commas must be followed by 'and' or 'or', or must occur
>> at specified positions in lists, sets and commands.\"/>
>>  <message
>>      importance=\"error\"
>>      type=\"sentence\"
>>      sentence=\"1\"
>>      token=\"8\"
>>      value=\"John, compute &quot;abc&quot; &#38; &lt;&gt; 2!\"
>>      repair=\"This is the first sentence that was not ACE. The sign
>> &lt;&gt; indicates the position where parsing failed.\"/>
>> </messages>"
>>
>> == neither is integer & integer OK
>>
>> CL-USER 114 > (ape :text "John, compute 1 & 2!" :solo 'drs)
>> "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
>>
>> <messages>
>>  <message
>>      importance=\"error\"
>>      type=\"sentence\"
>>      sentence=\"1\"
>>      token=\"5\"
>>      value=\"John, compute 1 &lt;&gt; &#38; 2!\"
>>      repair=\"Commas must be followed by 'and' or 'or', or must occur
>> at specified positions in lists, sets and commands.\"/>
>>  <message
>>      importance=\"error\"
>>      type=\"sentence\"
>>      sentence=\"1\"
>>      token=\"5\"
>>      value=\"John, compute 1 &lt;&gt; &#38; 2!\"
>>      repair=\"This is the first sentence that was not ACE. The sign
>> &lt;&gt; indicates the position where parsing failed.\"/>
>> </messages>"
>>
>> == integer + integer is OK
>>
>> CL-USER 115 > (ape :text "John, compute 1 + 2!" :solo 'drs)
>> "drs([], [command(drs([A], [predicate(A, compute, named('John'),
>> expr(+, int(1), int(2)))-1/3]))])"
>>
>> == string + integer is not OK
>>
>> CL-USER 116 > (ape :text "John, compute \"abc\" + 2!" :solo 'drs)
>> "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
>>
>> <messages>
>>  <message
>>      importance=\"error\"
>>      type=\"sentence\"
>>      sentence=\"1\"
>>      token=\"7\"
>>      value=\"John, compute &quot;abc&quot; &lt;&gt; + 2!\"
>>      repair=\"Commas must be followed by 'and' or 'or', or must occur
>> at specified positions in lists, sets and commands.\"/>
>>  <message
>>      importance=\"error\"
>>      type=\"sentence\"
>>      sentence=\"1\"
>>      token=\"7\"
>>      value=\"John, compute &quot;abc&quot; &lt;&gt; + 2!\"
>>      repair=\"This is the first sentence that was not ACE. The sign
>> &lt;&gt; indicates the position where parsing failed.\"/>
>> </messages>"
>>
>> == string + string is not OK
>>
>> CL-USER 117 > (ape :text "John, compute \"abc\" + \"2\"!" :solo 'drs)
>> "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
>>
>> <messages>
>>  <message
>>      importance=\"error\"
>>      type=\"sentence\"
>>      sentence=\"1\"
>>      token=\"7\"
>>      value=\"John, compute &quot;abc&quot; &lt;&gt; + &quot;2&quot;!\"
>>      repair=\"Commas must be followed by 'and' or 'or', or must occur
>> at specified positions in lists, sets and commands.\"/>
>>  <message
>>      importance=\"error\"
>>      type=\"sentence\"
>>      sentence=\"1\"
>>      token=\"7\"
>>      value=\"John, compute &quot;abc&quot; &lt;&gt; + &quot;2&quot;!\"
>>      repair=\"This is the first sentence that was not ACE. The sign
>> &lt;&gt; indicates the position where parsing failed.\"/>
>> </messages>"
>>
>> None of these are urgent, I'm just reporting things as I discover them.
>> Best regards,
>> Joshua
>> _______________________________________________
>> attempto mailing list
>> attempto at lists.ifi.uzh.ch
>> https://lists.ifi.uzh.ch/listinfo/attempto
>>
>



-- 
=====================
Joshua Taylor
tayloj at cs.rpi.edu, jtaylor at alum.rpi.edu

"A lot of good things went down one time,
  back in the goodle days."
    John Hartford


More information about the attempto mailing list